package com.zyf.chapter02.behavior.observer.eventbus;

import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;

/**
 * 用来标识 @Subscribe 注解的方法
 * @author yifeng
 */
public class ObserverAction {
    /**
     * 调用基础方法的对象
     * 即方法所在的对象
     */
    private Object target;
    /**
     * 对象中的方法
     */
    private Method method;

    public ObserverAction(Object target, Method method) {
        this.target = target;
        this.method = method;
        this.method.setAccessible(true);
    }

    /**
     * 执行
     * @param event 事件
     */
    public void execute(Object event) {
        try {
            method.invoke(target, event);
        } catch (IllegalAccessException | InvocationTargetException e) {
            e.printStackTrace();
        }
    }
}
